
using System.Text;
using Curriculum.Manejadores;
using Curriculum.Modelo.Clases;

namespace Curriculum.Modelo.Validadores
{
	/// <summary>
	/// Summary description for ValidadorVersion.
	/// </summary>
	public class ValidadorVersion
	{
		public ValidadorVersion()
		{}

		public static bool ValidarAtributosObligatorios(VersionCurriculo versionCV, StringBuilder sb)
		{
			foreach (Antecedente antecedentePersistente in versionCV.ListaAntecedente)
			{
				ValidarAtributosObligatorios(antecedentePersistente, antecedentePersistente.IdAntecedenteMetadato, sb, versionCV.NumeroVersion);
			}
			
			return (sb.ToString() == string.Empty);
		}

		public static void ValidarAtributosObligatorios(Antecedente antecedente, string idAntecedenteRaiz, StringBuilder sb, string nroVersion)
		{
			//TODO:descomentar
			MasterData mData = MasterData.GetInstancia(nroVersion);
			ManejadorAntecedentesMetadatos mAntecedentesMetadatos = ManejadorAntecedentesMetadatos.GetInstancia(nroVersion);

			if (antecedente.TieneAtributosPersistentes())
			{
				foreach (Atributo attPersistente in antecedente.ListaAtributo)
				{
					if ((attPersistente.Valor == string.Empty) && (mData.EsAtributoObligatorio(attPersistente.IdAtributoMetadato)) )
					{
						sb.Append("falta el valor de '"+ mData.GetAtributo(attPersistente.IdAtributoMetadato).nombre
							+ "' en un '" + mAntecedentesMetadatos.GetAntecedente(idAntecedenteRaiz).Nombre 
							+ "' - '" + mAntecedentesMetadatos.GetAntecedente(antecedente.IdAntecedenteMetadato).Nombre +"' \r\n");
					}
				}
			}
			if (antecedente.TieneAntecedentesPersistentes())
			{
				foreach (Antecedente antPersistenteHijo in antecedente.ListaAntecedente)
				{
					ValidarAtributosObligatorios(antPersistenteHijo, idAntecedenteRaiz, sb, nroVersion);
				}
			}
		}
	}
}
